import { NextRequest, NextResponse } from 'next/server';
import { prisma } from '@/app/prisma/client';
import getUserId from '@/utils/getUserId';

export async function POST(req: NextRequest, { params }: { params: { momentId: string } }) {
  try {
    const userId = getUserId(req);
    if (!userId) {
      return NextResponse.json({ error: '请先登录' }, { status: 401 });
    }

    const { momentId } = params;

    // 使用 upsert 来处理 "点赞" 操作，如果已存在则不执行任何操作，如果不存在则创建
    // 这比先查询再创建更高效，并能优雅地处理重复点赞
    await prisma.momentLike.upsert({
      where: {
        userId_momentId: {
          userId,
          momentId,
        },
      },
      update: {}, // 如果已存在，则不更新任何字段
      create: {
        userId,
        momentId,
      },
    });

    return NextResponse.json({ message: '点赞成功' });
  } catch (error) {
    console.error('点赞失败:', error);
    return NextResponse.json({ error: '服务器错误' }, { status: 500 });
  }
}

export async function DELETE(req: NextRequest, { params }: { params: { momentId: string } }) {
  try {
    const userId = getUserId(req);
    if (!userId) {
      return NextResponse.json({ error: '请先登录' }, { status: 401 });
    }

    const { momentId } = params;

    // 直接尝试删除，如果记录不存在，prisma 会优雅地处理（或我们可以忽略错误）
    await prisma.momentLike.deleteMany({
      where: {
        userId,
        momentId,
      },
    });

    return NextResponse.json({ message: '已取消点赞' });
  } catch (error) {
    console.error('取消点赞失败:', error);
    return NextResponse.json({ error: '服务器错误' }, { status: 500 });
  }
} 